This invention relates generally to disk caching for processor-based systems.
Input/output devices, such as disk drives used with processor-based systems, may be slower than other circuitry in those processor-based systems including the central processing units and/or memory devices. Therefore, there have been many attempts to increase the performance of input/output devices. However, because such devices are electromechanical in nature, there is a finite limit beyond which performance cannot be increased.
One way to reduce the information bottleneck at input/output devices, such as disk drives, is to use a cache. A cache is a memory device that logically resides between a device and the remainder of the processor-based system such as one or more central processing units and/or computer busses. A cache is an area memory that serves as a temporary storage area for the device, such as the disk drive. Frequently accessed data resides in the cache after initial access and subsequent accesses to the same data may be made to the cache instead of the device. The cache for a disk drive generally resides in the computer main memory, but may also reside in a separate device coupled to the system bus, as another example.
Typically, disk caches that use volatile memory, such as dynamic random access memory (DRAM) cannot save written data due to reliability concerns. If power is lost, there may be data corruption if that data is only stored in volatile memory. Disk caches that use nonvolatile memory, such as Flash memory or battery-backed up dynamic random access memory, may be more expensive.
Thus, there is a need for a disk cache that overcomes the problems inherent in existing volatile and nonvolatile memories.